// 用户先登录，登录成功之后拿到token，然后再保存token到本地

import 'dart:io';

void main() {
  print('开始执行main函数');

  // 先登录
  doLogin();

  print('我是不能被阻塞的任务');
}

void doLogin() async {
  try {
    String token = await login();
    bool res = await setToken(token);
    if (res) {
      print('操作成功');
    }
  } catch (e) {
    print(e);
  }
}

// 1. 模拟耗时的登录操作
Future<String> login() {
  return Future<String>(() {
    sleep(Duration(seconds: 3));
    print('完成登录操作');
    // 返回一个token
    return 'ewdewfd322';
  });
}

// 2. 模拟耗时的本地存储操作
Future<bool> setToken(String token) {
  return Future<bool>(() {
    sleep(Duration(seconds: 3));
    print('成功把token: $token存储到本地');
    return true;
  });
}
